from flask import Flask, request,abort,render_template,jsonify
from flask.views import MethodView
from unit4.utils.registerForm import RegisterForm


#父类 用用于封装共用的方法
class LoginRequiredView(MethodView):
    def dispatch_request(self,*args,**kwargs):
        is_login = False
        if not is_login:
            abort(403) # 没登录？直接拒绝访问（返回 403 错误）
        # 登录了？就继续执行子类的 get/post 方法
        return super().dispatch_request(*args, **kwargs)

#子类1 首页（需要登录）,继承 LoginRequiredView 类
class HomeView(LoginRequiredView):
    def get(self):
        return '您已经登录，欢迎来到我的主页'

#子类2 个人主页（需要登录） LoginRequiredView 类
class MineView(LoginRequiredView):
    def get(self):
        return "这是你的个人主页（已登录才能看）"

#单独一个页面不继承 ，且不需要登录
class RegisterView(MethodView):
    def get(self):
        form = RegisterForm()  # 每次GET请求创建新表单
        return render_template('register.html', form= form)
    def post(self):
        form = RegisterForm()  # 每次POST请求创建新表单
        if form.validate_on_submit():
            return jsonify(form.data)
        return render_template('register.html', form=form)